package cn.com.gzheroli.service.bfw;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import cn.com.gzheroli.bfw.pojo.base.TSUser;
import cn.com.gzheroli.core.common.model.json.AjaxJson;
import cn.com.gzheroli.core.common.model.json.ComboBox;
import cn.com.gzheroli.core.common.model.json.ComboTree;
import cn.com.gzheroli.core.common.model.json.TreeGrid;


public interface RoleService {
	
	/**
	 * 获取角色下的所有用户信息
	 * @param roleId
	 * @return
	 */
	public List<TSUser> getTsUserByRoleId(String roleId);
	/**
	 * 获取角色列表
	 * @param dataMap{maxResults:获取的记录数,firstResult:获取记录开始,rolename:角色名称}
	 * @return
	 */
	public List<Map> getRoles(Map dataMap);
	/**
	 * 获取角色数量
	 * @param dataMap{rolename:角色名称}
	 * @return
	 */
	public Long getRolesAcount(Map dataMap);
	
	public List<Map<String,Object>> getOperationList(Map dataMap);
	public Long getOperationAcount(Map dataMap);
	public List<Map<String,Object>> getAllRoleFunctionList(Map dataMap);
	public List<Map<String,Object>> getUserRoles(Map datamap);
	public List<Map<String,Object>> getUserNotRoles(Map datamap,int page,int rows);
	public List<ComboBox> getRoleList(String userId);
	public Long getUserNotRolesCount(Map datamap);
	
	public List<ComboTree> getAllAuthorityList(Map dataMap);
	/**
	 * 
	* @Title: updateAuthority 
	* @Description: 修改角色操作权限 
	* @param @param operations 操作代码
	* @param @param roleId 角色编号
	* @param @param rolefunction 角色功能id
	* @param @return    设定文件 
	* @return AjaxJson    返回类型 
	* @throws
	 */
	public AjaxJson updateAuthority(String operations,String roleId,String rolefunction);
	/**
	 * 
	* @Title: deleteRoleUser 
	* @Description: 删除角色用户
	* @param @param roleId 角色id
	* @param @param userids 用户id串
	* @param @return    设定文件 
	* @return AjaxJson    返回类型 
	* @throws
	 */
	public AjaxJson deleteRoleUser(String roleId,String userids);
	/**
	 * 
	* @Title: updateOperation 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @param roleId 角色编号
	* @param @param functionId 菜单id
	* @param @param operationcodes 操作代码
	* @param @return    设定文件 
	* @return AjaxJson    返回类型 
	* @throws
	 */
	public AjaxJson updateOperation(String roleId,String functionId,String operationcodes);
	/**
	 * 
	* @Title: getOperationListForFunction 
	* @Description: 根据功能获取操作代码列表
	* @param @param user 登录用户
	* @param @param functionId 功能编号
	* @param @param roleId 角色编号
	* @param @return    设定文件 
	* @return AjaxJson    返回类型 
	* @throws
	 */
	public AjaxJson getOperationListForFunction(TSUser user,String functionId,String roleId);
	/**
	 * 
	* @Title: savep 
	* @Description: 保存操作
	* @param @param roleId 角色编号
	* @param @param functionId 功能编号
	* @param @param ids    设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void savep(String roleId, String functionId, String ids);
	/**
	 * 
	* @Title: getOperate 
	* @Description: 获取权限操作
	* @param @param treegrid
	* @param @param roleId
	* @param @param user
	* @param @return    设定文件 
	* @return List<TreeGrid>    返回类型 
	* @throws
	 */
	public List<TreeGrid> getOperate(TreeGrid treegrid,String roleId,TSUser user);
}
